import { createPinia } from 'pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
const store = createPinia()
store.use(piniaPluginPersistedstate)
export function useStore() {
  // 加载modules下的所有ts文件
  const storeModulesFile = import.meta.glob('./modules/**/*.ts', {
    import: 'default',
    eager: true,
  })

  const storeModules: { [propName: string]: object } = {}
  Object.keys(storeModulesFile).map((path) => {
    const fileName = path.match(/.\/modules\/(\S*)\/*.ts/)?.[1]
    const useModuleStore = storeModulesFile[path] as any
    storeModules[fileName] = useModuleStore()
  })
  return storeModules
}
export default store

// 1.0.0版本中useStore的处理是手动引入模块返回的函数，然后执行函数，并把函数的返回值放到useStore中返回出去
// import useHomeStore from './modules/home'
// import useAboutStore from './modules/about'
// export function useStore() {
//   return {
//     home: useHomeStore(),
//     about: useAboutStore(),
//   }
// }

// 2.0.0版本中，useStore的处理是自动引入modules下的所有ts文件，然后把文件名作为key，文件导出的函数的返回值作为value，放到useStore中返回出去
// 所以我们在使用的使用只需要创建modules下的store即可，
// 然后我们使用的时候只需要const { about, home, login } = useStore()引入和文件名相同的模块就可以使用该模块下的store了
// 切记我们在const { about, home, login } = useStore()引入的时候，一定要注意引入的模块名要和文件名一致，否则找不到对应的模块
